#include <bits/stdc++.h>
using namespace std;
using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;
const int N=1e6+5;

int n;
bool check[3][210];
int sum=0;

void dfs(int row){
    if(row>n){
        sum++;
    }
    for(int i=1;i<=n;i++){
        if((!check[0][i])&&(!check[1][row+i])&&(!check[2][row-i+n])){
            check[0][i]=1;
            check[1][row+i]=1;
            check[2][row-i+n]=1;
            dfs(row+1);
            check[0][i]=0;
            check[1][row+i]=0;
            check[2][row-i+n]=0;
        }
    }
    return;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    cin>>n;
    dfs(1);
    cout<<sum<<endl;

    return 0;
}
// 题目：n皇后问题

// 描述：
// 在n×n格的网格上摆放n个皇后，使其不能互相攻击。即任意两个皇后都不能处于同一行、同一列或同一斜线上，问有多少种摆法。

// 输入格式
//     一个数n
// 输出格式
//    一个数，符合要求的结果。

// 输入样例
//     8
// 输出样例
//    92